|
AT-NFC
2.1 (win)
AT-NFC kernel set
|
HAL Card Reader NFC L1 Interface. More...
Typedefs | |
| typedef KER_BOOL(KER_API * | CALLBACK_NFCL1_EXCHANGE_APDU) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_BYTE btApduCase, KER_BYTE btCLA, KER_BYTE btINS, KER_BYTE btP1, KER_BYTE btP2, KER_INT16U usLc, const KER_BYTE *pbtDataIn, KER_INT16U usLe, KER_BYTE *pbtDataOut, KER_INT16U *pusDataOut, KER_INT16U usDataOutSize, KER_INT16U *pusSW1SW2) |
| Callback type to send APDU requset and obtain APDU response from card. More... | |
| typedef KER_BOOL(KER_API * | CALLBACK_NFCL1_SEND_C_APDU) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_BYTE btApduCase, KER_BYTE btCLA, KER_BYTE btINS, KER_BYTE btP1, KER_BYTE btP2, KER_INT16U usLc, const KER_BYTE *pbtDataIn, KER_INT16U usLe) |
| Callback type to send APDU requset to card. More... | |
| typedef KER_RES(KER_API * | CALLBACK_NFCL1_RECV_R_APDU) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT16U usTimeout, KER_BYTE *pbtDataOut, KER_INT16U *pusDataOut, KER_INT16U usDataOutSize, KER_INT16U *pusSW1SW2, KER_INT32U *pulExecutionTime) |
| Callback type to obtain APDU response from card. More... | |
| typedef KER_BOOL(KER_API * | CALLBACK_NFCL1_CARD_FIELD_OFF) (KER_CTX_PARAM KER_VOID *pCallbackHandle) |
| Callback type to power down the RF card. More... | |
| typedef KER_RES(KER_API * | CALLBACK_NFCL1_CARD_POLL) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT32U ulTimeout, KER_INT16U *pusCardType, KER_BYTE *pbtUID, KER_INT16U *pusUIDLen) |
| Callback type to power up the RF card. More... | |
| typedef KER_BOOL(KER_API * | CALLBACK_NFCL1_GET_CARD_INFO) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT16U *pusCardType, KER_BYTE *pbtUID, KER_INT16U *pusUIDLen) |
| Callback type to get info of a previously tapped card. More... | |
| typedef KER_RES(KER_API * | CALLBACK_NFCL1_CARD_REMOVAL_PROCEDURE) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT32U ulTimeout) |
| Callback type to perform EMV L1 card removal procedure Called by Entry Point only. More... | |
| typedef KER_BOOL(KER_API * | CALLBACK_NFCL1_RESET_OPERATION_FIELD) (KER_CTX_PARAM KER_VOID *pCallbackHandle) |
| Callback type to reset operation field Called by Entry Point only. More... | |
| typedef KER_BOOL(KER_API * | CALLBACK_NFCL1_GET_READER_SERIAL_NUMBER) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_CHAR *pchData, KER_BYTE *pbtDataLen) |
| Callback type to get serial number of the Cless IFD. More... | |
| typedef KER_BOOL(KER_API * | CALLBACK_NFCL1_GET_READER_TYPE_ID) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_CHAR *pchData, KER_INT16U *pbtDataLen) |
| Callback type to get reader type id of the Cless IFD. More... | |
HAL Card Reader NFC L1 Interface.
This functions should be implemented by terminal application
| #define KER_NFCL1_APDU_CASE1 0x01 |
Exchange APDU Case 1 - Command Data: NO Expected Response Data: NO
C-APDU = {CLA INS P1 P2}
| #define KER_NFCL1_APDU_CASE2 0x02 |
Exchange APDU Case 2 - Command Data: NO Expected Response Data: YES
C-APDU = {CLA INS P1 P2 Le}
| #define KER_NFCL1_APDU_CASE3 0x03 |
Exchange APDU Case 3 - Command Data: YES Expected Response Data: NO
C-APDU = {CLA INS P1 P2 Lc [sDataIn(Lc)]}
| #define KER_NFCL1_APDU_CASE4 0x04 |
Exchange APDU Case 4 - Command Data: YES Expected Response Data: YES
C-APDU = {CLA INS P1 P2 Lc [sDataIn(Lc)] Le}
| #define KER_NFCL1_CR_HW_ERROR 0xFD0B |
card removal HW error
| #define KER_NFCL1_CR_RES_TIMEOUT 0xFD0A |
card removal timeout
| #define KER_NFCL1_DEF_TIMEOUT 0xFFFF |
Use internal PCD wait for R-APDU timeout
| #define KER_NFCL1_LE_MAX 0x0000 |
expected response length is unknown (card may respond with any length available)
| #define KER_NFCL1_LE_NULL 0xFFFF |
no response data is expected (Le parameter should not be sent to the card)
| #define KER_NFCL1_PHISICAL_CARD_TYPE_DEFAULT 0x0000 |
Use PCD default card types for palling for (as polling input)
| #define KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_A 0x0004 |
ISO 14443.4 Type A Card (T=CL)
| #define KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_B 0x0008 |
ISO 14443.4 Type B Card (T=CL)
| #define KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_A 0x0001 |
ISO 14443 Type A Card
| #define KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_AND_MIFARE 0x0040 |
Combined ISO 14443 and Mifare Card - it's better to use mask combination instead
| #define KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_B 0x0002 |
ISO 14443 Type B Card
| #define KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_STD 0x0010 |
Mifare Std Card
| #define KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_UL 0x0020 |
Mifare Ultralight Card
| #define KER_NFCL1_PHISICAL_CARD_TYPE_NONE 0x0000 |
No card located (as polling output )
| #define KER_NFCL1_PHISICAL_CARD_TYPE_UNKNOWN 0x8000 |
Unknown card
| #define KER_NFCL1_POLLING_TIMEOUT 0xFFFE |
R-APDU polling timeout
| #define KER_NFCL1_PU_POLLING_TIMEOUT 0xFFFFFFFE |
power up polling timeout
| #define KER_NFCL1_PU_RES_COLLISION 0xFD02 |
card collision detected
| #define KER_NFCL1_PU_RES_COMM_ERROR 0xFD03 |
card communication error
| #define KER_NFCL1_PU_RES_FATAL_ERROR 0xFD04 |
fatal error
| #define KER_NFCL1_PU_RES_TIMEOUT 0xFD01 |
card polling timeout
| #define KER_NFCL1_RES_HW_ERROR 0xFE05 |
R-APDU HW error
| #define KER_NFCL1_RES_PENDING 0xFE02 |
R-APDU pending...
| #define KER_NFCL1_RES_PROTOCOL 0xFE04 |
R-APDU protocol error
| #define KER_NFCL1_RES_TIMEOUT 0xFE01 |
R-APDU timeout assigned by R-APDU
| #define KER_NFCL1_RES_TRANSMISSION 0xFE03 |
R-APDU transmission error
| #define KER_NFCL1_RES_UNKNOWN 0xFE0F |
R-APDU unexpected error
| typedef KER_BOOL(KER_API * CALLBACK_NFCL1_CARD_FIELD_OFF) (KER_CTX_PARAM KER_VOID *pCallbackHandle) |
Callback type to power down the RF card.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| typedef KER_RES(KER_API * CALLBACK_NFCL1_CARD_POLL) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT32U ulTimeout, KER_INT16U *pusCardType, KER_BYTE *pbtUID, KER_INT16U *pusUIDLen) |
Callback type to power up the RF card.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [in] | ulTimeout | Card wait in RF timeout |
| [out] | pusCardType | Card type, see KER_NFCL1_PHISICAL_CARD_TYPE_NONE, KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_B KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_STD KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_UL KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_B KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_AND_MIFARE KER_NFCL1_PHISICAL_CARD_TYPE_UNKNOWN |
| [out] | pbtUID | Card UID, if available |
| [in,out] | pusUIDLen | Size of lpbtUID in/out |
| typedef KER_RES(KER_API* CALLBACK_NFCL1_CARD_REMOVAL_PROCEDURE) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT32U ulTimeout) |
Callback type to perform EMV L1 card removal procedure Called by Entry Point only.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [in] | ulTimeout | Card wait in RF timeout (in msec) |
| typedef KER_BOOL(KER_API * CALLBACK_NFCL1_EXCHANGE_APDU) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_BYTE btApduCase, KER_BYTE btCLA, KER_BYTE btINS, KER_BYTE btP1, KER_BYTE btP2, KER_INT16U usLc, const KER_BYTE *pbtDataIn, KER_INT16U usLe, KER_BYTE *pbtDataOut, KER_INT16U *pusDataOut, KER_INT16U usDataOutSize, KER_INT16U *pusSW1SW2) |
Callback type to send APDU requset and obtain APDU response from card.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [in] | btApduCase | APDU request type - KER_NFCL1_APDU_CASE1, KER_NFCL1_APDU_CASE2, KER_NFCL1_APDU_CASE3 or KER_NFCL1_APDU_CASE4 |
| [in] | btCLA | Class of Instruction |
| [in] | btINS | Instruction Code |
| [in] | btP1 | Instruction Parameter 1 |
| [in] | btP2 | Instruction Parameter 2 |
| [in] | usLc | The pbtDataIn data length |
| [in] | pbtDataIn | The data to send to the card |
| [in] | usLe | Expected length of response data from card (if known), or KER_EXT_NFCL1_LE_MAX or KER_EXT_NFCL1_LE_NULL |
| [out] | pbtDataOut | Buffer to obtain command response data sent by the card |
| [out] | pusDataOut | Length of data placed in pbtDataOut |
| [in] | usDataOutSize | pbtDataOut buffer size |
| [out] | pusSW1SW2 | card response status bytes |
| typedef KER_BOOL(KER_API * CALLBACK_NFCL1_GET_CARD_INFO) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT16U *pusCardType, KER_BYTE *pbtUID, KER_INT16U *pusUIDLen) |
Callback type to get info of a previously tapped card.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [out] | pusCardType | Card type, see KER_NFCL1_PHISICAL_CARD_TYPE_NONE, KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_B KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_STD KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_UL KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_B KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_AND_MIFARE KER_NFCL1_PHISICAL_CARD_TYPE_UNKNOWN |
| [out] | pbtUID | Card UID, if available |
| [in,out] | pusUIDLen | Size of lpbtUID in/out |
| typedef KER_BOOL(KER_API * CALLBACK_NFCL1_GET_READER_SERIAL_NUMBER) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_CHAR *pchData, KER_BYTE *pbtDataLen) |
Callback type to get serial number of the Cless IFD.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [out] | pchData | the buffer to fill |
| [in,out] | pbtDataLen | the length of data buffer (in/out), 8 or less expected |
| typedef KER_BOOL(KER_API* CALLBACK_NFCL1_GET_READER_TYPE_ID) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_CHAR *pchData, KER_INT16U *pbtDataLen) |
Callback type to get reader type id of the Cless IFD.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [out] | pchData | the buffer to fill |
| [in,out] | pbtDataLen | the length of data buffer (in/out), 64 bytes recommended |
| typedef KER_RES(KER_API * CALLBACK_NFCL1_RECV_R_APDU) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_INT16U usTimeout, KER_BYTE *pbtDataOut, KER_INT16U *pusDataOut, KER_INT16U usDataOutSize, KER_INT16U *pusSW1SW2, KER_INT32U *pulExecutionTime) |
Callback type to obtain APDU response from card.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [in] | usTimeout | usTimeout Wait R-APDU timeout (in 100 microseconds, or special values KER_NFCL1_POLLING_TIMEOUT, KER_NFCL1_DEF_TIMEOUT) |
| [out] | pbtDataOut | Buffer to obtain command response data sent by the card |
| [out] | pusDataOut | Length of data placed in pbtDataOut |
| [in] | usDataOutSize | pbtDataOut buffer size |
| [out] | pusSW1SW2 | card response status bytes |
| [out] | pulExecutionTime | APDU command execution time in 100 microseconds (Optional, set KER_NULL if you don't need it) |
| typedef KER_BOOL(KER_API* CALLBACK_NFCL1_RESET_OPERATION_FIELD) (KER_CTX_PARAM KER_VOID *pCallbackHandle) |
| typedef KER_BOOL(KER_API * CALLBACK_NFCL1_SEND_C_APDU) (KER_CTX_PARAM KER_VOID *pCallbackHandle, KER_BYTE btApduCase, KER_BYTE btCLA, KER_BYTE btINS, KER_BYTE btP1, KER_BYTE btP2, KER_INT16U usLc, const KER_BYTE *pbtDataIn, KER_INT16U usLe) |
Callback type to send APDU requset to card.
| [in] | pCallbackHandle | - callback context, obtained from Terminal Application, and stored by hal_register_callback (btCallbackType = KER_HAL_CALLBACK_HANDLE) |
| [in] | btApduCase | APDU request type - KER_NFCL1_APDU_CASE1, KER_NFCL1_APDU_CASE2, KER_NFCL1_APDU_CASE3 or KER_NFCL1_APDU_CASE4 |
| [in] | btCLA | Class of Instruction |
| [in] | btINS | Instruction Code |
| [in] | btP1 | Instruction Parameter 1 |
| [in] | btP2 | Instruction Parameter 2 |
| [in] | usLc | The pbtDataIn data length |
| [in] | pbtDataIn | The data to send to the card |
| [in] | usLe | Expected length of response data from card (if known), or KER_EXT_NFCL1_LE_MAX or KER_EXT_NFCL1_LE_NULL |
| KER_RES hal_nfcl1_card_poll | ( | KER_CTX_PARAM KER_INT32U | ulTimeout, |
| KER_INT16U * | pusCardType, | ||
| KER_BYTE * | pbtUID, | ||
| KER_INT16U * | pusUIDLen | ||
| ) |
PCD field on and card polling during specified timeout.
| [in] | ulTimeout | Card polling timeout (in msec, or special value KER_NFCL1_PU_POLLING_TIMEOUT for external polling) |
| [in,out] | pusCardType | Card type polling for bitmask as input (set KER_NFCL1_PHISICAL_CARD_TYPE_DEFAULT to use internal PCD configuration), located card type as output (optional, set KER_NULL for PCD default settings), see KER_NFCL1_PHISICAL_CARD_TYPE_DEFAULT, KER_NFCL1_PHISICAL_CARD_TYPE_NONE, KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_B KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_B KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_STD KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_UL KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_AND_MIFARE KER_NFCL1_PHISICAL_CARD_TYPE_UNKNOWN |
| [out] | pbtUID | Card UID, if available |
| [in,out] | pusUIDLen | Size of pbtUID in/out |
| KER_RES hal_nfcl1_card_removal_procedure | ( | KER_CTX_PARAM KER_INT32U | ulTimeout | ) |
Performs EMV L1 card removal procedure.
| [in] | ulTimeout | Card wait in RF timeout (in msec) |
| KER_BOOL hal_nfcl1_exchange_apdu | ( | KER_CTX_PARAM KER_BYTE | btApduCase, |
| KER_BYTE | btCLA, | ||
| KER_BYTE | btINS, | ||
| KER_BYTE | btP1, | ||
| KER_BYTE | btP2, | ||
| KER_INT16U | usLc, | ||
| const KER_BYTE * | pbtDataIn, | ||
| KER_INT16U | usLe, | ||
| KER_BYTE * | pbtDataOut, | ||
| KER_INT16U * | pusDataOut, | ||
| KER_INT16U | usDataOutSize, | ||
| KER_INT16U * | pusSW1SW2 | ||
| ) |
Send APDU requset and obtain APDU response from card.
| [in] | btApduCase | APDU request type - KER_NFCL1_APDU_CASE1, KER_NFCL1_APDU_CASE2, KER_NFCL1_APDU_CASE3 or KER_NFCL1_APDU_CASE4 |
| [in] | btCLA | Class of Instruction |
| [in] | btINS | Instruction Code |
| [in] | btP1 | Instruction Parameter 1 |
| [in] | btP2 | Instruction Parameter 2 |
| [in] | usLc | The pbtDataIn data length |
| [in] | pbtDataIn | The data to send to the card |
| [in] | usLe | Expected length of response data from card (if known), or KER_EXT_NFCL1_LE_MAX or KER_EXT_NFCL1_LE_NULL |
| [out] | pbtDataOut | Buffer to obtain command response data sent by the card |
| [out] | pusDataOut | Length of data placed in pbtDataOut |
| [in] | usDataOutSize | pbtDataOut buffer size |
| [out] | pusSW1SW2 | card response status bytes |
| KER_BOOL hal_nfcl1_field_off | ( | KER_CTX_SINGLE_PARAM | ) |
| KER_BOOL hal_nfcl1_get_card_info | ( | KER_CTX_PARAM KER_INT16U * | pusCardType, |
| KER_BYTE * | pbtUID, | ||
| KER_INT16U * | pusUIDLen | ||
| ) |
Get info of a previously tapped card.
| [out] | pusCardType | Card type, see KER_NFCL1_PHISICAL_CARD_TYPE_NONE, KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_4_B KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_STD KER_NFCL1_PHISICAL_CARD_TYPE_MIFARE_A_UL KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_A KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_B KER_NFCL1_PHISICAL_CARD_TYPE_ISO14443_AND_MIFARE KER_NFCL1_PHISICAL_CARD_TYPE_UNKNOWN |
| [out] | pbtUID | Card UID, if available |
| [in,out] | pusUIDLen | Size of lpbtUID in/out |
| KER_BOOL hal_nfcl1_get_reader_serial_number | ( | KER_CTX_PARAM KER_CHAR * | pchData, |
| KER_BYTE * | pbtDataLen | ||
| ) |
| KER_RES hal_nfcl1_recv_r_apdu | ( | KER_CTX_PARAM KER_INT16U | usTimeout, |
| KER_BYTE * | pbtDataOut, | ||
| KER_INT16U * | pusDataOut, | ||
| KER_INT16U | usDataOutSize, | ||
| KER_INT16U * | pusSW1SW2, | ||
| KER_INT32U * | pulExecutionTime | ||
| ) |
Obtain APDU response from card.
| [in] | usTimeout | Wait R-APDU timeout (in 100 microseconds, or special values KER_NFCL1_POLLING_TIMEOUT, KER_NFCL1_DEF_TIMEOUT) |
| [out] | pbtDataOut | Buffer to obtain command response data sent by the card |
| [out] | pusDataOut | Length of data placed in pbtDataOut |
| [in] | usDataOutSize | pbtDataOut buffer size |
| [out] | pusSW1SW2 | card response status bytes |
| [out] | pulExecutionTime | APDU command execution time in 100 microseconds (Optionl, set KER_NULL if you don't need it) |
| KER_BOOL hal_nfcl1_reset_operation_field | ( | KER_CTX_SINGLE_PARAM | ) |
| KER_BOOL hal_nfcl1_send_c_apdu | ( | KER_CTX_PARAM KER_BYTE | btApduCase, |
| KER_BYTE | btCLA, | ||
| KER_BYTE | btINS, | ||
| KER_BYTE | btP1, | ||
| KER_BYTE | btP2, | ||
| KER_INT16U | usLc, | ||
| const KER_BYTE * | pbtDataIn, | ||
| KER_INT16U | usLe | ||
| ) |
Send APDU requset to card.
| [in] | btApduCase | APDU request type - KER_NFCL1_APDU_CASE1, KER_NFCL1_APDU_CASE2, KER_NFCL1_APDU_CASE3 or KER_NFCL1_APDU_CASE4 |
| [in] | btCLA | Class of Instruction |
| [in] | btINS | Instruction Code |
| [in] | btP1 | Instruction Parameter 1 |
| [in] | btP2 | Instruction Parameter 2 |
| [in] | usLc | The pbtDataIn data length |
| [in] | pbtDataIn | The data to send to the card |
| [in] | usLe | Expected length of response data from card (if known), or KER_EXT_NFCL1_LE_MAX or KER_EXT_NFCL1_LE_NULL |